<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: #58a;
        }
    </style>
</head>

<body>
    <div id="ad"></div>
    <script>
        //需求1.点击div，2s后颜色变成粉色
        //这里有几种方法，一一列举一下

        //第一种普通模式,通过that保存，作用域下的赋值
        // let ad = document.getElementById('ad');
        // ad.addEventListener("click", function () {
        //     let that = this
        //     setTimeout(function () {
        //         //修改背景颜色
        //         console.log(that);
        //         that.style.background = 'pink'

        //     }, 2000)
        // })


        //第二种，通过bind实现(改变this指向)
        // let ad = document.getElementById('ad');
        // ad.addEventListener("click", function () {
        //     setTimeout(function () {
        //         //修改背景颜色
        //         console.log(this);
        //         this.style.background = 'pink'

        //     }.bind(this), 2000)
        // })

        //第三种，箭头函数
        let ad = document.getElementById('ad');
        ad.addEventListener("click", function () {
            setTimeout(() => {
                this.style.background = 'pink' //函数声明时所在函数this也就是ad
            }, 2000)
        })

        //需求2.从数组中返回偶数的元素
        //第一种方式
        // const arr = [1, 6, 9, 10, 100, 25]
        // const result = arr.filter(function (item) {
        //     if (item % 2 == 0) {
        //         return true;
        //     } else {
        //         return false;
        //     }
        // })
        // console.log(result);

        //第二种方式
        // const arr = [1, 6, 9, 10, 100, 25]
        // const result = arr.filter(item => {
        //     if (item % 2 == 0) {
        //         return true;
        //     } else {
        //         return false;
        //     }
        // })
        // console.log(result);

        //简单写法
        const result = arr.filter(item => item % 2 === 0)
        console.log(result);

        //箭头函数适合于this无关的回调，定时器，数组的方法
    //箭头函数不适于this有关的回调，事件回调，对象的方法
    //箭头函数没有自己的this只用外层的this
    </script>
</body>

</html>